- LyoqCiAqIOW9seinhlRWIOW8ueW5leaUr+aMgSAKICAgICogaHR0cHM6Ly90Lm1lL2ZvbmdtaV9vZmZpY2FsLwogICAgKiBodHRwczovL2dpdGh1Yi5jb20vRm9uZ01pL1JlbGVhc2UvdHJlZS9tYWluL2FwawogKiBDb29raWXorr7nva4KICAgICogQ29va2ll6I635Y+W5pa55rOVIGh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1VuZENvdmVyL1B5cmFtaWRTdG9yZS9tYWluL2xpc3QubWQKICogQ29va2ll6K6+572u5pa55rOVMTogRFItUFkg5ZCO5Y+w566h55CG55WM6Z2iCiAgICAqIENNU+WQjuWPsOeuoeeQhiA+IOiuvue9ruS4reW/gyA+IOeOr+Wig+WPmOmHjyA+IHsiYmlsaV9jb29raWUiOiJYWFhYWFhYIiwidm1pZCI6IlhYWFhYWCJ9ID4g5L+d5a2YCiAqIENvb2tpZeiuvue9ruaWueazlTI6IOaJi+WKqOabv+aNokNvb2tpZQogICAgKiDlupXkuIvku6PnoIEgaGVhZGVyc+eahAogICAgKiAiQ29va2llIjoiJGJpbGlfY29va2llIgogICAgKiDmiYvliqjmm7/mjaLkuLoKICAgICogIkNvb2tpZSI6IuWwhuiOt+WPlueahENvb2tpZem7j+i0tOWcqOi/mSIKICog5a6i5oi356uv6ZW/5pyfQ29va2ll6K6+572u5pWZ56iLOgogKiDmipPljIXlk5Tlk6nmiYvmnLrnq6/mkJzntKJhY2Nlc3Nfa2V5LOWPluS7u+aEj+mTvuaOpemHjOeahGFjY2Vzc19rZXnlkoxhcHBrZXnlnKhkcnB5546v5aKD5Y+Y6YeP5Lit5aKe5Yqg5ZCM5ZCN55qE546v5aKD5Y+Y6YeP5Y2z5Y+vCiAqIOatpOaXtuWTlOWTqS5qc+i/meS4quino+aekOWPr+eUqOS6juatpOa6kOeahOino+aekOe6v+i3r+eUqAogKi8KCnZhciBydWxlID0gewogICAgdGl0bGU6J+WTlOWTqeW9seinhlvlrphdJywKICAgIGhvc3Q6J2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbScsCiAgICB1cmw6Jy9meWNsYXNzLWZ5cGFnZSZ2bWlkPSR2bWlkJywKICAgIGRldGFpbFVybDonL3BnYy92aWV3L3dlYi9zZWFzb24/c2Vhc29uX2lkPWZ5aWQnLAogICAgZmlsdGVyX3VybDonZmw9e3tmbH19JywKICAgIHZtaWTojrflj5bmlZnnqIs6J+eZu+W9leWQjuiuv+mXrmh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvbmF2LOaQnOe0om1pZOWwseaYryxjb29raWXpnIDopoEgYmlsaV9qY3QsRGVkZVVzZXJJRCxTRVNTREFUQeWPguaVsCcsCiAgICBzZWFyY2hVcmw6Jy94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/a2V5d29yZD0qKiZwYWdlPWZ5cGFnZSZzZWFyY2hfdHlwZT0nLAogICAgc2VhcmNoYWJsZToxLAogICAgZmlsdGVyYWJsZToxLAogICAgcXVpY2tTZWFyY2g6MCwKICAgIGhlYWRlcnM6ewogICAgICAgICdVc2VyLUFnZW50JzonUENfVUEnLAogICAgICAgICJSZWZlcmVyIjogImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbSIsCiAgICAgICAgIkNvb2tpZSI6IiRiaWxpX2Nvb2tpZSIKICAgIH0sCiAgICB0YWJfb3JkZXI6WydiaWxpYmlsaScsJ0Lnq5knXSwvL+e6v+i3r+mhuuW6jyzmjInph4zpnaLnmoTpobrluo/kvJjlhYjvvIzmsqHlhpnnmoTkvp3mrKHmjpLlkI7pnaIKICAgIHRpbWVvdXQ6NTAwMCwKICAgIGNsYXNzX25hbWU6J+eVquWJpyblm73liJsm55S15b2xJueUteinhuWJpybnuqrlvZXniYcm57u86Im6JuWFqOmDqCbov73nlaom6L+95YmnJuaXtumXtOihqCcsCiAgICBjbGFzc191cmw6JzEmNCYyJjUmMyY3JuWFqOmDqCbov73nlaom6L+95YmnJuaXtumXtOihqCcsCiAgICBmaWx0ZXI6eyLlhajpg6giOlt7ImtleSI6InRpZCIsIm5hbWUiOiLliIbnsbsiLCJ2YWx1ZSI6W3sibiI6IueVquWJpyIsInYiOiIxIn0seyJuIjoi5Zu95YibIiwidiI6IjQifSx7Im4iOiLnlLXlvbEiLCJ2IjoiMiJ9LHsibiI6IueUteinhuWJpyIsInYiOiI1In0seyJuIjoi6K6w5b2V54mHIiwidiI6IjMifSx7Im4iOiLnu7zoiboiLCJ2IjoiNyJ9XX0seyJrZXkiOiJvcmRlciIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaSreaUvuaVsOmHjyIsInYiOiIyIn0seyJuIjoi5pu05paw5pe26Ze0IiwidiI6IjAifSx7Im4iOiLmnIDpq5jor4TliIYiLCJ2IjoiNCJ9LHsibiI6IuW8ueW5leaVsOmHjyIsInYiOiIxIn0seyJuIjoi6L+955yL5Lq65pWwIiwidiI6IjMifSx7Im4iOiLlvIDmkq3ml7bpl7QiLCJ2IjoiNSJ9LHsibiI6IuS4iuaYoOaXtumXtCIsInYiOiI2In1dfSx7ImtleSI6InNlYXNvbl9zdGF0dXMiLCJuYW1lIjoi5LuY6LS5IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiLTEifSx7Im4iOiLlhY3otLkiLCJ2IjoiMSJ9LHsibiI6IuS7mOi0uSIsInYiOiIyJTJDNiJ9LHsibiI6IuWkp+S8muWRmCIsInYiOiI0JTJDNiJ9XX1dLCLml7bpl7TooagiOlt7ImtleSI6InRpZCIsIm5hbWUiOiLliIbnsbsiLCJ2YWx1ZSI6W3sibiI6IueVquWJpyIsInYiOiIxIn0seyJuIjoi5Zu95YibIiwidiI6IjQifV19XX0sCiAgICBwbGF5X3BhcnNlOnRydWUsCiAgICAvLyBwbGF5X2pzb246W3tyZTonKicsIGpzb246e2p4OjEsIHBhcnNlOjAsaGVhZGVyOkpTT04uc3RyaW5naWZ5KHsidXNlci1hZ2VudCI6IlBDX1VBIn0pfX1dLAogICAgcGFnZWNvdW50OnsiMSI6MSwiMiI6MSwiMyI6MSwiNCI6MSwiNSI6MSwiNyI6MSwi5pe26Ze06KGoIjoxfSwKICAgIGxhenk6JycsCiAgICBsaW1pdDo1LAogICAg5o6o6I2QOicnLAogICAg5o6o6I2QOidqczpsZXQgZD1bXTtmdW5jdGlvbiBnZXRfcmVzdWx0KHVybCl7bGV0IHZpZGVvcz1bXTtsZXQgaHRtbD1yZXF1ZXN0KHVybCk7bGV0IGpvPUpTT04ucGFyc2UoaHRtbCk7aWYoam9bImNvZGUiXT09PTApe2xldCB2b2RMaXN0PWpvLnJlc3VsdD9qby5yZXN1bHQubGlzdDpqby5kYXRhLmxpc3Q7dm9kTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHZvZCl7bGV0IGFpZD0odm9kWyJzZWFzb25faWQiXSsiIikudHJpbSgpO2xldCB0aXRsZT12b2RbInRpdGxlIl0udHJpbSgpO2xldCBpbWc9dm9kWyJjb3ZlciJdLnRyaW0oKTtsZXQgcmVtYXJrPXZvZC5uZXdfZXA/dm9kWyJuZXdfZXAiXVsiaW5kZXhfc2hvdyJdOnZvZFsiaW5kZXhfc2hvdyJdO3ZpZGVvcy5wdXNoKHt2b2RfaWQ6YWlkLHZvZF9uYW1lOnRpdGxlLHZvZF9waWM6aW1nLHZvZF9yZW1hcmtzOnJlbWFya30pfSl9cmV0dXJuIHZpZGVvc31mdW5jdGlvbiBnZXRfcmFuayh0aWQscGcpe3JldHVybiBnZXRfcmVzdWx0KCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3dlYi9yYW5rL2xpc3Q/c2Vhc29uX3R5cGU9Iit0aWQrIiZwYWdlc2l6ZT0yMCZwYWdlPSIrcGcrIiZkYXk9MyIpfWZ1bmN0aW9uIGdldF9yYW5rMih0aWQscGcpe3JldHVybiBnZXRfcmVzdWx0KCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9yYW5rL3dlYi9saXN0P3NlYXNvbl90eXBlPSIrdGlkKyImcGFnZXNpemU9MjAmcGFnZT0iK3BnKyImZGF5PTMiKX1mdW5jdGlvbiBob21lX3ZpZGVvKCl7bGV0IHZpZGVvcz1nZXRfcmFuaygxKS5zbGljZSgwLDUpO1s0LDIsNSwzLDddLmZvckVhY2goZnVuY3Rpb24oaSl7dmlkZW9zPXZpZGVvcy5jb25jYXQoZ2V0X3JhbmsyKGkpLnNsaWNlKDAsNSkpfSk7cmV0dXJuIHZpZGVvc31WT0RTPWhvbWVfdmlkZW8oKTsnLAogICAg5LiA57qnOicnLAogICAg5LiA57qnOidqczpsZXQgZD1bXTtsZXQgdm1pZD1pbnB1dC5zcGxpdCgidm1pZD0iKVsxXS5zcGxpdCgiJiIpWzBdO2Z1bmN0aW9uIGdldF9yZXN1bHQodXJsKXtsZXQgdmlkZW9zPVtdO2xldCBodG1sPXJlcXVlc3QodXJsKTtsZXQgam89SlNPTi5wYXJzZShodG1sKTtpZihqb1siY29kZSJdPT09MCl7bGV0IHZvZExpc3Q9am8ucmVzdWx0P2pvLnJlc3VsdC5saXN0OmpvLmRhdGEubGlzdDt2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKXtsZXQgYWlkPSh2b2RbInNlYXNvbl9pZCJdKyIiKS50cmltKCk7bGV0IHRpdGxlPXZvZFsidGl0bGUiXS50cmltKCk7bGV0IGltZz12b2RbImNvdmVyIl0udHJpbSgpO2xldCByZW1hcms9dm9kLm5ld19lcD92b2RbIm5ld19lcCJdWyJpbmRleF9zaG93Il06dm9kWyJpbmRleF9zaG93Il07dmlkZW9zLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KX1yZXR1cm4gdmlkZW9zfWZ1bmN0aW9uIGdldF9yYW5rKHRpZCxwZyl7cmV0dXJuIGdldF9yZXN1bHQoImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvd2ViL3JhbmsvbGlzdD9zZWFzb25fdHlwZT0iK3RpZCsiJnBhZ2VzaXplPTIwJnBhZ2U9IitwZysiJmRheT0zIil9ZnVuY3Rpb24gZ2V0X3JhbmsyKHRpZCxwZyl7cmV0dXJuIGdldF9yZXN1bHQoImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL3Jhbmsvd2ViL2xpc3Q/c2Vhc29uX3R5cGU9Iit0aWQrIiZwYWdlc2l6ZT0yMCZwYWdlPSIrcGcrIiZkYXk9MyIpfWZ1bmN0aW9uIGdldF96aHVpKHBnLG1vZGUpe2xldCB1cmw9Imh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2Jhbmd1bWkvZm9sbG93L2xpc3Q/dHlwZT0iK21vZGUrIiZmb2xsb3dfc3RhdHVzPTAmcG49IitwZysiJnBzPTEwJnZtaWQ9Iit2bWlkO3JldHVybiBnZXRfcmVzdWx0KHVybCl9ZnVuY3Rpb24gZ2V0X2FsbCh0aWQscGcsb3JkZXIsc2Vhc29uX3N0YXR1cyl7bGV0IHVybD0iaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P29yZGVyPSIrb3JkZXIrIiZwYWdlc2l6ZT0yMCZ0eXBlPTEmc2Vhc29uX3R5cGU9Iit0aWQrIiZwYWdlPSIrcGcrIiZzZWFzb25fc3RhdHVzPSIrc2Vhc29uX3N0YXR1cztyZXR1cm4gZ2V0X3Jlc3VsdCh1cmwpfWZ1bmN0aW9uIGdldF90aW1lbGluZSh0aWQscGcpe2xldCB2aWRlb3M9W107bGV0IHVybD0iaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy93ZWIvdGltZWxpbmUvdjI/c2Vhc29uX3R5cGU9Iit0aWQrIiZkYXlfYmVmb3JlPTImZGF5X2FmdGVyPTQiO2xldCBodG1sPXJlcXVlc3QodXJsKTtsZXQgam89SlNPTi5wYXJzZShodG1sKTtpZihqb1siY29kZSJdPT09MCl7bGV0IHZpZGVvczE9W107bGV0IHZvZExpc3Q9am8ucmVzdWx0LmxhdGVzdDt2b2RMaXN0LmZvckVhY2goZnVuY3Rpb24odm9kKXtsZXQgYWlkPSh2b2RbInNlYXNvbl9pZCJdKyIiKS50cmltKCk7bGV0IHRpdGxlPXZvZFsidGl0bGUiXS50cmltKCk7bGV0IGltZz12b2RbImNvdmVyIl0udHJpbSgpO2xldCByZW1hcms9dm9kWyJwdWJfaW5kZXgiXSsi44CAIit2b2RbImZvbGxvd3MiXS5yZXBsYWNlKCLns7vliJciLCIiKTt2aWRlb3MxLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KTtsZXQgdmlkZW9zMj1bXTtmb3IobGV0IGk9MDtpPDc7aSsrKXtsZXQgdm9kTGlzdD1qb1sicmVzdWx0Il1bInRpbWVsaW5lIl1baV1bImVwaXNvZGVzIl07dm9kTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHZvZCl7aWYodm9kWyJwdWJsaXNoZWQiXSsiIj09PSIwIil7bGV0IGFpZD0odm9kWyJzZWFzb25faWQiXSsiIikudHJpbSgpO2xldCB0aXRsZT12b2RbInRpdGxlIl0udHJpbSgpO2xldCBpbWc9dm9kWyJjb3ZlciJdLnRyaW0oKTtsZXQgZGF0ZT12b2RbInB1Yl90cyJdO2xldCByZW1hcms9ZGF0ZSsiICAgIit2b2RbInB1Yl9pbmRleCJdO3ZpZGVvczIucHVzaCh7dm9kX2lkOmFpZCx2b2RfbmFtZTp0aXRsZSx2b2RfcGljOmltZyx2b2RfcmVtYXJrczpyZW1hcmt9KX19KX12aWRlb3M9dmlkZW9zMi5jb25jYXQodmlkZW9zMSl9cmV0dXJuIHZpZGVvc31mdW5jdGlvbiBjYXRlX2ZpbHRlcihkLGNvb2tpZSl7aWYoTVlfQ0FURT09PSIxIil7cmV0dXJuIGdldF9yYW5rKE1ZX0NBVEUsTVlfUEFHRSl9ZWxzZSBpZihbIjIiLCIzIiwiNCIsIjUiLCI3Il0uaW5jbHVkZXMoTVlfQ0FURSkpe3JldHVybiBnZXRfcmFuazIoTVlfQ0FURSxNWV9QQUdFKX1lbHNlIGlmKE1ZX0NBVEU9PT0i5YWo6YOoIil7bGV0IHRpZD1NWV9GTC50aWR8fCIxIjtsZXQgb3JkZXI9TVlfRkwub3JkZXJ8fCIyIjtsZXQgc2Vhc29uX3N0YXR1cz1NWV9GTC5zZWFzb25fc3RhdHVzfHwiLTEiO3JldHVybiBnZXRfYWxsKHRpZCxNWV9QQUdFLG9yZGVyLHNlYXNvbl9zdGF0dXMpfWVsc2UgaWYoTVlfQ0FURT09PSLov73nlaoiKXtyZXR1cm4gZ2V0X3podWkoTVlfUEFHRSwxKX1lbHNlIGlmKE1ZX0NBVEU9PT0i6L+95YmnIil7cmV0dXJuIGdldF96aHVpKE1ZX1BBR0UsMil9ZWxzZSBpZihNWV9DQVRFPT09IuaXtumXtOihqCIpe2xldCB0aWQ9TVlfRkwudGlkfHwiMSI7cmV0dXJuIGdldF90aW1lbGluZSh0aWQsTVlfUEFHRSl9ZWxzZXtyZXR1cm5bXX19Vk9EUz1jYXRlX2ZpbHRlcigpOycsCiAgICDkuoznuqc6ewogICAgICAgIGlzX2pzb246dHJ1ZSwKICAgICAgICB0aXRsZToiLnJlc3VsdC50aXRsZTsucmVzdWx0LnNoYXJlX3N1Yl90aXRsZSIsCiAgICAgICAgaW1nOiIucmVzdWx0LmNvdmVyIiwKICAgICAgICBkZXNjOiIucmVzdWx0Lm5ld19lcC5kZXNjOy5yZXN1bHQucHVibGlzaC5wdWJfdGltZTsucmVzdWx0LnN1YnRpdGxlIiwKICAgICAgICBjb250ZW50OiIucmVzdWx0LmV2YWx1YXRlIiwKICAgICAgICB0YWJzOiJqczpwZGZhPWpzcC5wZGZhO1RBQlM9WydC56uZJ10iLAogICAgICAgIGxpc3RzOiIucmVzdWx0LmVwaXNvZGVzIiwKICAgICAgICBsaXN0X3RleHQ6J3RpdGxlJywKICAgICAgICBsaXN0X3VybDonY2lkJywKICAgIH0sCiAgICDkuoznuqc6JycsCiAgICDkuoznuqc6J2pzOmZ1bmN0aW9uIHpoKG51bSl7bGV0IHA9IiI7aWYoTnVtYmVyKG51bSk+MWU4KXtwPShudW0vMWU4KS50b0ZpeGVkKDIpKyLkur8ifWVsc2UgaWYoTnVtYmVyKG51bSk+MWU0KXtwPShudW0vMWU0KS50b0ZpeGVkKDIpKyLkuIcifWVsc2V7cD1udW19cmV0dXJuIHB9bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7bGV0IGpvPUpTT04ucGFyc2UoaHRtbCkucmVzdWx0O2xldCBpZD1qb1sic2Vhc29uX2lkIl07bGV0IHRpdGxlPWpvWyJ0aXRsZSJdO2xldCBwaWM9am9bImNvdmVyIl07bGV0IGFyZWFzPWpvWyJhcmVhcyJdWzBdWyJuYW1lIl07bGV0IHR5cGVOYW1lPWpvWyJzaGFyZV9zdWJfdGl0bGUiXTtsZXQgZGF0ZT1qb1sicHVibGlzaCJdWyJwdWJfdGltZSJdLnN1YnN0cigwLDQpO2xldCBkZWM9am9bImV2YWx1YXRlIl07bGV0IHJlbWFyaz1qb1sibmV3X2VwIl1bImRlc2MiXTtsZXQgc3RhdD1qb1sic3RhdCJdO2xldCBzdGF0dXM9IuW8ueW5lTogIit6aChzdGF0WyJkYW5tYWt1cyJdKSsi44CA54K56LWeOiAiK3poKHN0YXRbImxpa2VzIl0pKyLjgIDmipXluIE6ICIremgoc3RhdFsiY29pbnMiXSkrIuOAgOi/veeVqui/veWJpzogIit6aChzdGF0WyJmYXZvcml0ZXMiXSk7bGV0IHNjb3JlPWpvLmhhc093blByb3BlcnR5KCJyYXRpbmciKT8i6K+E5YiGOiAiK2pvWyJyYXRpbmciXVsic2NvcmUiXSsi44CAIitqb1sic3VidGl0bGUiXToi5pqC5peg6K+E5YiGIisi44CAIitqb1sic3VidGl0bGUiXTtsZXQgdm9kPXt2b2RfaWQ6aWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzpwaWMsdHlwZV9uYW1lOnR5cGVOYW1lLHZvZF95ZWFyOmRhdGUsdm9kX2FyZWE6YXJlYXMsdm9kX3JlbWFya3M6cmVtYXJrLHZvZF9hY3RvcjpzdGF0dXMsdm9kX2RpcmVjdG9yOnNjb3JlLHZvZF9jb250ZW50OmRlY307bGV0IGphPWpvWyJlcGlzb2RlcyJdO2xldCBwbGF5dXJsczE9W107bGV0IHBsYXl1cmxzMj1bXTtqYS5mb3JFYWNoKGZ1bmN0aW9uKHRtcEpvKXtsZXQgZWlkPXRtcEpvWyJpZCJdO2xldCBjaWQ9dG1wSm9bImNpZCJdO2xldCBsaW5rPXRtcEpvWyJsaW5rIl07bGV0IHBhcnQ9dG1wSm9bInRpdGxlIl0ucmVwbGFjZSgiIyIsIi0iKSsiICIrdG1wSm9bImxvbmdfdGl0bGUiXTtwbGF5dXJsczEucHVzaChwYXJ0KyIkIitlaWQrIl8iK2NpZCk7cGxheXVybHMyLnB1c2gocGFydCsiJCIrbGluayl9KTtsZXQgcGxheVVybD1wbGF5dXJsczEuam9pbigiIyIpKyIkJCQiK3BsYXl1cmxzMi5qb2luKCIjIik7dm9kWyJ2b2RfcGxheV9mcm9tIl09IkLnq5kkJCRiaWxpYmlsaSI7dm9kWyJ2b2RfcGxheV91cmwiXT1wbGF5VXJsO1ZPRD12b2Q7JywKICAgIOaQnOe0ojonJywKICAgIOaQnOe0ojonanM6bGV0IHVybDE9aW5wdXQrIm1lZGlhX2Jhbmd1bWkiO2xldCB1cmwyPWlucHV0KyJtZWRpYV9mdCI7bGV0IGh0bWw9cmVxdWVzdCh1cmwxKTtsZXQgbXNnPUpTT04ucGFyc2UoaHRtbCkubWVzc2FnZTtpZihtc2chPT0iMCIpe1ZPRFM9W3t2b2RfbmFtZTpLRVkrIuKeoiIrbXNnLHZvZF9pZDoibm9fZGF0YSIsdm9kX3JlbWFya3M6IuWIq+eCuSznvLrlsJFiaWxpX2Nvb2tpZSIsdm9kX3BpYzoiaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGpkaG54L2RyX3B5L21haW4vNDA0LmpwZyJ9XX1lbHNle2xldCBqbzE9SlNPTi5wYXJzZShodG1sKS5kYXRhO2h0bWw9cmVxdWVzdCh1cmwyKTtsZXQgam8yPUpTT04ucGFyc2UoaHRtbCkuZGF0YTtsZXQgdmlkZW9zPVtdO2xldCB2b2RMaXN0PVtdO2lmKGpvMVsibnVtUmVzdWx0cyJdPT09MCl7dm9kTGlzdD1qbzJbInJlc3VsdCJdfWVsc2UgaWYoam8yWyJudW1SZXN1bHRzIl09PT0wKXt2b2RMaXN0PWpvMVsicmVzdWx0Il19ZWxzZXt2b2RMaXN0PWpvMVsicmVzdWx0Il0uY29uY2F0KGpvMlsicmVzdWx0Il0pfXZvZExpc3QuZm9yRWFjaChmdW5jdGlvbih2b2Qpe2xldCBhaWQ9KHZvZFsic2Vhc29uX2lkIl0rIiIpLnRyaW0oKTtsZXQgdGl0bGU9S0VZKyLinqIiK3ZvZFsidGl0bGUiXS50cmltKCkucmVwbGFjZShcJzxlbSBjbGFzcz0ia2V5d29yZCI+XCcsIiIpLnJlcGxhY2UoIjwvZW0+IiwiIik7bGV0IGltZz12b2RbImNvdmVyIl0udHJpbSgpO2xldCByZW1hcms9dm9kWyJpbmRleF9zaG93Il07dmlkZW9zLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KTtWT0RTPXZpZGVvc30nLAogICAgbGF6eTonJywKICAgIGxhenk6YGpzOgogICAgICAgIGlmICgvXmh0dHAvLnRlc3QoaW5wdXQpKSB7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgang6IDEsCiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICBoZWFkZXI6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgICAidXNlci1hZ2VudCI6ICJNb3ppbGxhLzUuMCIKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsZXQgaWRzID0gaW5wdXQuc3BsaXQoIl8iKTsKICAgICAgICAgICAgbGV0IGRhbiA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92MS9kbS9saXN0LnNvP29pZD0nICsgaWRzWzFdOwogICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgIGxldCB1cmwgPSAiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9wbGF5ZXIvd2ViL3BsYXl1cmw/cW49MTE2JmVwX2lkPSIgKyBpZHNbMF0gKyAiJmNpZD0iICsgaWRzWzFdOwogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QodXJsKTsKICAgICAgICAgICAgbGV0IGpSb290ID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgaWYgKGpSb290WyJtZXNzYWdlIl0gIT09ICJzdWNjZXNzIikgewogICAgICAgICAgICAgICAgcHJpbnQoIumcgOimgeWkp+S8muWRmOadg+mZkOaJjeiDveingueciyIpOwogICAgICAgICAgICAgICAgaW5wdXQgPSAiIgogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbGV0IGpvID0galJvb3RbInJlc3VsdCJdOwogICAgICAgICAgICAgICAgbGV0IGphID0gam9bImR1cmwiXTsKICAgICAgICAgICAgICAgIGxldCBtYXhTaXplID0gLTE7CiAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTsKICAgICAgICAgICAgICAgIGphLmZvckVhY2goZnVuY3Rpb24odG1wSm8sIGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobWF4U2l6ZSA8IE51bWJlcih0bXBKb1sic2l6ZSJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICBtYXhTaXplID0gTnVtYmVyKHRtcEpvWyJzaXplIl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGxldCB1cmwgPSAiIjsKICAgICAgICAgICAgICAgIGlmIChqYS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdXJsID0gamFbcG9zaXRpb25dWyJ1cmwiXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVzdWx0WyJwYXJzZSJdID0gMDsKICAgICAgICAgICAgICAgIHJlc3VsdFsicGxheVVybCJdID0gIiI7CiAgICAgICAgICAgICAgICByZXN1bHRbInVybCJdID0gdXJsOwogICAgICAgICAgICAgICAgcmVzdWx0WyJoZWFkZXIiXSA9IHsKICAgICAgICAgICAgICAgICAgICBSZWZlcmVyOiAiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tIiwKICAgICAgICAgICAgICAgICAgICAiVXNlci1BZ2VudCI6ICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTAwLjAuNDg5Ni4xMjcgU2FmYXJpLzUzNy4zNiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXN1bHRbImNvbnRlbnRUeXBlIl0gPSAidmlkZW8veC1mbHYiOwogICAgICAgICAgICAgICAgcmVzdWx0WyJkYW5tYWt1Il0gPSBkYW47CiAgICAgICAgICAgICAgICBpbnB1dCA9IHJlc3VsdAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgYCwKfQ==
|